package com.zwx.aray.leetcode_7;

/**
 * 只加一
 * 给定一个非负整数组成的非空数组，在该数的基础上加一，返回一个新的数组。
 * 最高位数字存放在数组的首位， 数组中每个元素只存储一个数字。
 * 你可以假设除了整数 0 之外，这个整数不会以零开头。
 *
 * @author 文希
 * @create 2019-06-28 0:10
 */
public class PlusOne {

    /**
     * 只需要从后向前遍历，逢9置0，非9加1，最后考虑是否扩充数组即可
     */
    private static int[] plusOne(int[] digits){
        int n = digits.length;
        for (int i=n-1;i>=0;i--){
            //非9加1
            if (digits[i]<9){
                digits[i]++;
                return digits;
            }
            //逢9置0
            digits[i]=0;
        }
        //全部为9，则需要数组扩充一位
        int[] result = new int[n+1];
        result[0]=1;
        return result;
    }

    public static void main(String[] args) {
        int[] digits={9,9,9};
        int[] ints = plusOne(digits);
        for (int anInt : ints) {
            System.out.println(anInt);
        }
    }
}
